<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
 * Ucenter API
 *
 * 功能使用:
 * http://faq.comsenz.com/library/UCenteruse/usebasicset/usebasicset_index.htm
 * 数据字典:
 * http://faq.comsenz.com/library/database/uc/uc_index.htm
 * 接口开发:
 * http://faq.comsenz.com/library/UCenter/introduction/introduction_brief.htm
 */
class Uc_api {

    public function __construct() {
        //载入配置
        $filename = APPPATH . 'config/ucenter.php';
        if (file_exists($filename)) require $filename;
        //载入uc_client入口文件
        require FCPATH . 'uc_client/client.php';

        log_message('debug', "Uc_api Class Initialized");
    }

    /**
     * ***********************************************
     * 第1部分 用户接口(16)
     * ***********************************************
     * 此部分接口负责用户的注册、登录，可实现用户表的统一管理
     */

    /**
     * 用户注册
     * 用户名、密码、Email 为一个用户在 UCenter 的基本数据
     * 提交后 UCenter 会按照注册设置和词语过滤的规则检测用户名和 Email 的格式是否正确合法
     * 如果正确则返回注册后的用户 ID，否则返回相应的错误信息
     *
     * >0:返回用户ID, 表示用户注册成功
     * -1:用户名不合法
     * -2:包含不允许注册的词语
     * -3:用户名已经存在
     * -4:Email格式有误
     * -5:Email不允许注册
     * -6:该Email已经被注册
     *
     * @param string $username 用户名
     * @param string $password 密码
     * @param string $email 电子邮件
     * @param int $questionid 安全提问索引
     * @param string $answer 安全提问答案
     * @param string $regip 注册ip
     * @return int
     */
    public static function user_register($username, $password, $email, $questionid = '', $answer = '', $regip = '') {
        $uc_uid = uc_user_register($username, $password, $email, $questionid, $answer, $regip);
        self::reopen_phperror();
        return $uc_uid;
    }

    /**
     * 用户登录
     *
     * 返回array()
     * integer [0]  >0:返回用户 ID，表示用户登录成功
     *              -1:用户不存在，或者被删除
     *              -2:密码错
     *              -3:安全提问错
     * string  [1]    用户名
     * string  [2]    密码
     * string  [3]    Email
     * bool    [4]    用户名是否重名
     *
     * @param string $username 用户名 / 用户 ID / 用户 E-mail
     * @param string $password 密码
     * @param int $isuid 是否使用用户 ID登录
     *                        1:使用用户 ID登录
     *                        2:使用用户 E-mail登录
     *                        0:(默认值) 使用用户名登录
     * @param int $checkques 是否验证安装提问
     *                        1:验证安全提问
     *                        0:(默认值) 不验证安全提问
     * @param string $questionid 安全提问索引
     * @param string $answer 安全提问答案
     * @return array
     */
    public static function user_login($username, $password, $isuid = 0, $checkques = 0, $questionid = '', $answer = '') {
        $uc_user = uc_user_login($username, $password, $isuid, $checkques, $questionid, $answer);
        self::reopen_phperror();
        return $uc_user;
    }

    /**
     * 获取用户数据
     */
    public static function get_user($username, $isuid = 0) {
        return uc_get_user($username, $isuid);
    }

    /**
     * 更新用户资料
     */
    public static function user_edit($username, $oldpw, $newpw, $email, $ignoreoldpw = 0, $questionid = '', $answer = '') {
        return uc_user_edit($username, $oldpw, $newpw, $email, $ignoreoldpw, $questionid, $answer);
    }

    /**
     * 删除用户
     */
    public static function user_delete($uid) {
        return uc_user_delete($uid);
    }

    /**
     * 删除用户头像
     */
    public static function user_deleteavatar($uid) {
        return uc_user_delete($uid);
    }

    /**
     * 同步登录
     * 如果当前应用程序在 UCenter 中设置允许同步登录,
     * 那么本接口函数会通知其他设置了同步登录的应用程序登录,
     * 把返回的 HTML 输出在页面中即可完成对其它应用程序的通知;
     *
     * 注意:
     * 输出的 HTML 中包含执行远程的 javascript 脚本,
     * 请让页面在此脚本运行完毕后再进行跳转操作,
     * 否则可能会导致无法同步登录成功;
     *
     * @param int $uid
     * @return string 同步登录的 HTML 代码
     */
    public static function user_synlogin($uid) {
        $html = uc_user_synlogin($uid);
        self::reopen_phperror();
        return $html;
    }

    /**
     * 同步退出
     */
    public static function user_synlogout() {
        return uc_user_synlogout();

    }

    /**
     * 检查 Email 地址
     *
     * 返回值
     *  1:成功
     * -4:Email 格式有误
     * -5:Email 不允许注册
     * -6:该 Email 已经被注册
     *
     * @param string $email
     * @return int
     */
    public static function user_checkemail($email) {
        $uc_result = uc_user_checkemail($email);
        self::reopen_phperror();
        return $uc_result;
    }

    /**
     * 检查用户名
     *
     * 返回值
     *  1:成功
     * -1:用户名不合法
     * -2:包含不允许注册的词语
     * -3:用户名已经存在
     *
     * @param string $username
     * @return int
     */
    public static function user_checkname($username) {
        $uc_result = uc_user_checkname($username);
        self::reopen_phperror();
        return $uc_result;
    }

    /**
     * 添加保护用户
     */
    public static function user_addprotected($username, $admin = '') {
        return uc_user_addprotected($username, $admin);
    }

    /**
     * 删除保护用户
     */
    public static function user_deleteprotected($username) {
        return uc_user_deleteprotected($username);
    }

    /**
     * 得到受保护的用户名列表
     */
    public static function user_getprotected() {
        return uc_user_getprotected();
    }

    /**
     * 把重名用户合并到 UCenter
     */
    public static function user_merge($oldusername, $newusername, $uid, $password, $email) {
        return uc_user_merge($oldusername, $newusername, $uid, $password, $email);
    }

    /**
     * 移除重名用户记录
     */
    public static function user_merge_remove($username) {
        return uc_user_merge_remove($username);
    }

    /**
     * 获取指定应用的指定用户积分
     */
    public static function user_getcredit($appid, $uid, $credit) {
        return uc_user_getcredit($appid, $uid, $credit);
    }

    /**
     * ***********************************************
     * 第2部分 短消息接口(19)
     * ***********************************************
     * 此部分接口负责用户间的短消息传输，可以跨应用间互相发送短消息
     * “短消息中心”的界面接口可以让应用只需一个函数接口即拥有短消息功能
     * 对于高级用户 UCenter 也提供了丰富的收发接口函数供用户自己开发短消息系统
     */

    /**
     * ***********************************************
     * 第3部分 好友接口(4)
     * ***********************************************
     * 此部分接口负责用户好友信息的共享。一个应用更新的好友资料其他应用都能够看到
     */

    /**
     * ***********************************************
     * 第4部分 积分接口(1)
     * ***********************************************
     * 此部分接口负责应用间的积分兑换
     */

    /**
     * ***********************************************
     * 第5部分 头像接口(2)
     * ***********************************************
     * 此部分接口提供了一套用户头像的编辑、显示的平台
     * 可以让应用拥有用头像的编辑功能
     */

    /**
     * ***********************************************
     * 第6部分 标签接口(1)
     * ***********************************************
     * 此部分接口负责应用间标签信息的聚合
     */

    /**
     * ***********************************************
     * 第7部分 事件接口(2)
     * ***********************************************
     * 此部分接口负责应用间信息的聚合
     */

    /**
     * ***********************************************
     * 第8部分 应用接口(1)
     * ***********************************************
     * 此部分接口用于获取应用相关信息
     */

    /**
     * ***********************************************
     * 第9部分 邮件接口(1)
     * ***********************************************
     * 此部分接口用于邮件相关信息
     */

    /**
     * 获取注册错误信息
     *
     * @param int $code
     */
    public static function errors($code) {
        $msg = array();
        $msg[0] = 'fail';
        $msg[-1] = 'username_has_illegal_char';
        $msg[-2] = 'username_has_ban_char';
        $msg[-3] = 'username_already_exists';
        $msg[-4] = 'email_error';
        $msg[-5] = 'email_cannot_be_used';
        $msg[-6] = 'email_already_exists';

        return isset($msg[$code]) ? $msg[$code] : $msg[0];
    }

    /**
     * 开发模式重新打开php错误提示
     */
    public static function reopen_phperror() {
        if (defined('ENVIRONMENT') && ENVIRONMENT == 'development') error_reporting(E_ALL);
    }
}

/* End of file Uc_api.php */
/* Location: ./application/libraries/uc/Uc_api.php */
